package org.qiyu.live.user.provider.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
import org.qiyu.live.user.provider.dao.po.UserTagPO;

/**
 * 作者：無言
 * 时间：2024/11/20 15:48
 * 描述：永无BUG
 */

@Mapper
public interface IUserTagMapper extends BaseMapper<UserTagPO> {

    /**
     * 使用或的思路来设置标签，只能允许第一次设置成功
     * 最后这个条件 and ${fieldName} & #{tag}=0 确保设置时，没有包含标签才进行设置
     * @param userId
     * @param fieldName
     * @param tag
     * @return
     */
    @Update("update t_user_tag set ${fieldName}=${fieldName} | #{tag} where user_id=#{userId} and ${fieldName} & #{tag}=0")
    int setTag(Long userId, String fieldName, long tag);


    /**
     * 使用先取反在与的思路来取消标签，只能允许第一次删除成功
     * 最后这个条件 and ${fieldName} & & #{tag}= #{tag} 确保取消时，有包含标签才进行取消标签的设置
     * @param userId
     * @param fieldName
     * @param tag
     * @return
     */
    @Update("update t_user_tag set ${fieldName}=${fieldName} &~ #{tag} where user_id=#{userId} and ${fieldName} & #{tag}= #{tag}")
    int cancelTag(Long userId, String fieldName, long tag);
}
